package com.myrpc.client;

import com.myrpc.Peer;
import com.myrpc.transport.TransportClient;

import java.util.List;

/**
 * 表示选择哪个server去连接
 */
public interface TransportSelector {
    /**
     * 选择一个transport与server做交互
     * @return 网络Client
     */

    TransportClient select();
    /**
     * 释放用完的client
     */
    void release(TransportClient client);
    void close();

    /**
     * 初始化Selector
     * @param peers 可以连接Server的端点信息
     * @param count Clent与Server建立了多少个链接
     * @param clazz client实现class
     */
    void init(List<Peer> peers,
              int count,
              Class<? extends TransportClient> clazz);
}
